package org.example.codegenerate.modelext.WebVo.domian.table;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.example.codegenerate.modelext.WebVo.Enum.EnumDeployWay;
import org.example.codegenerate.modelext.WebVo.Enum.EnumModelType;
import org.hibernate.validator.constraints.Length;

import org.springframework.stereotype.Component;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.UUID;


@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@Component
public class WebModelVo implements Serializable {
        private String author="demo";//暂时比客户端的多这个属性
        //private String realbussiness="test";//暂时比客户端的要多这个属性
        private String testmodulename="";
        private String deploymodulename="";
        private String testuserDefinePackage="";
        private String deployuserDefinePackage="";
        private EnumDeployWay enumDeployWay=EnumDeployWay.TEST;

        @NotEmpty
        @Length(min=10,max=50)
        private String codefromClientGUID= UUID.randomUUID().toString();
        @NotNull
        private String destinationOutPutDir;//页面上   代码生成目录
        @Length(min=0,max=100)
        private String frontDestionOutPutDir;//前端代码生成的目录位置
        private String servicename ="service";//service，应该是分层方式
        //private String functionDescription;//页面上     功能说明  ,这个属性放在表上
        private String jformType="1";//1 永远是1
        //private String tablename;// 页面上  表名，移动表的类中
        @Length(min=5,max=50)
        private String packageName;// 页面上  包名(小写)
        //private String entityName;// 页面上    实体类名，移动表的类中
        @NotNull
        private EnumModelType modeltype;//k=many，枚举类型中的模板编号，tree，
        @NotNull
        private TableVoDomain tableVoDomain=new TableVoDomain();
        //List<WebGenerateModel> subList = new ArrayList();
        // https://blog.csdn.net/qq_25215821/article/details/123668758 单独使用Hibernate Validate
        //使用链式输入POJO,赋值之后进行检测。所以要使用模板方式，将验证的放在父方法中。直接
        //启动一个SpringBoot新的，然后加一个自己的starter，然后继承一个接口，然后进行运行。如果validate有错误，就提醒无法运行，需要补充数据。如果没有错误，就直接运行，返回结果



}
